#pragma once
#include <string>
#include <vector>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/vector.hpp>
#include <boost/serialization/string.hpp>

using namespace std;
//Auxilliary structs for CElementHidingCollection class.

struct DomainClassElementHidingRule
{
	wstring Domain;
	wstring ClassName;
	DomainClassElementHidingRule(){};
	DomainClassElementHidingRule(const wstring& domain, const wstring& className)
	{
		Domain = domain;
		ClassName = className;
	}
private:
	friend class boost::serialization::access;    
	template<class Archive>
	void serialize(Archive & ar, const unsigned int version)
	{
		ar & Domain;
		ar & ClassName;
	}
};

struct DomainIdElementHidingRule
{
	wstring Domain;
	wstring Id;
	DomainIdElementHidingRule(){}
	DomainIdElementHidingRule(const wstring& domain, const wstring& id)
	{
		Domain = domain;
		Id = id;
	}
private:
	friend class boost::serialization::access;    
	template<class Archive>
	void serialize(Archive & ar, const unsigned int version)
	{
		ar & Domain;	
		ar & Id;
	}
};

struct GeneralElementHidingRule
{
	wstring Domain;
	wstring Selector;
	GeneralElementHidingRule(){}
	GeneralElementHidingRule(const wstring& domain, const wstring& selector)
	{
		Domain = domain;
		Selector = selector;
	}
private:
	friend class boost::serialization::access;    
	template<class Archive>
	void serialize(Archive & ar, const unsigned int version)
	{
		ar & Domain;
		ar & Selector;
	}
};